Conventionally, a semiconductor storage device that includes memory cells each retaining a quantity of charges corresponding to a data value has been widely known. Based on a comparison between a threshold voltage corresponding to the quantity of charges retained in a memory cell and a preset read voltage, the data value stored in the memory cell is determined. The quantity of charges retained in the memory cell changes as the time passes and for each access. The data value changes due to a change in the quantity of charges. The changed data value is detected as an error. A technique that enables the read voltage to be shifted according to a change in the quantity of charges has been developed.